package cn.seaboot.admin.user.dao;

import cn.seaboot.admin.user.bean.Menu;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * dao
 *
 * @author Mr.css
 */
@Repository
public interface MenuDao {
    /**
     * 增
     *
     * @param menu pojo
     * @return affected rows
     */
    int insert(Menu menu);

    /**
     * 删
     *
     * @param id id
     * @return affected rows
     */
    int deleteById(String id);

    /**
     * 删除全部子级
     *
     * @param path path
     * @return affected rows
     */
    int deleteChild(String path);

    /**
     * 改
     *
     * @param menu pojo
     * @return affected rows
     */
    int updateSampleById(Menu menu);

    /**
     * 查
     *
     * @param id id
     * @return pojo
     */
    Menu selectById(String id);

    /**
     * 查询子级数量
     *
     * @param pid pid
     * @return cnt
     */
    int selectChildrenCnt(String pid);

    /**
     * 查询子级的最大路径值
     *
     * @param id id
     * @return path
     */
    String selectMaxChildrenPath(String id);

    /**
     * 查询角色的菜单权限
     *
     * @param groupName 菜单组别
     * @param roleId    角色 ID
     * @return list
     */
    List<Map<String, Object>> selectMenuAuthority(String groupName, String roleId);

    /**
     * 查找角色所拥有的的菜单列表
     *
     * @param groupName 菜单组别
     * @param roleId    角色 ID
     * @return list
     */
    List<Menu> selectMenuByRoleId(String groupName, String roleId);

    /**
     * 查询菜单列表
     *
     * @param groupName 菜单组别
     * @return list
     */
    List<Menu> selectList(String groupName);
}
